#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>

//3. dup重定向的用法
//命令行输入信息：
int main(int argc,char*argv[])
{
  if(argc != 2)
  {
    return 2;
  }
  // int fd = open("log.txt",O_CREAT|O_WRONLY|O_TRUNC);
  int fd = open("log.txt",O_CREAT|O_WRONLY|O_APPEND);
  if(fd<0)
  {
    perror("open");
    return 1;
  }
  dup2(fd,1);
  fprintf(stdout,"%s\n",argv[1]);
  return 0;
}


//2. 输入重定向测试(补充测试)
//int main()
//{
//  close(0);//关闭文件的输入指向
//  int fd = open("log.txt",O_RDONLY);
//  if(fd<0)
//  {
//    perror("open");
//    return 1;
//  }
//  printf("fd:%d\n",fd);
//  
//  //测试方法：本应输入到屏幕的信息，因重定向输入到了文件中
//  char buffer[64];
//  fgets(buffer,sizeof buffer,stdin);
//  printf("%s\n",buffer);
//  return 0;
//}
//
////1 文件描述符分配原则测试
//int main()
//{
//  //测试思路：关闭较小的文件描述符，然后创建文件观察新文件文件描述符如何分配
//  close(0);
//  int fd = open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
//
//  if(fd<0)
//  {
//    perror("open");
//    return 1;
//  }
//
//  printf("fd = %d\n",fd);
//  printf("fd = %d\n",fd);
//  return 0;
//}
